import { useUserStore } from '@/stores'
import { createRouter, createWebHistory } from 'vue-router'
// 进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
NProgress.configure({
  showSpinner: false
})

// createRouter 创建路由实例，===> new VueRouter()
// history 是路由模式，hash模式，history模式
// createWebHistory() 是开启history模块   http://xxx/user
// createWebHashHistory() 是开启hash模式    http://xxx/#/user

// vite 的配置 import.meta.env.BASE_URL 是路由的基准地址，默认是 ’/‘
// https://vitejs.dev/guide/build.html#public-base-path
// 如果将来你部署的域名路径是：http://xxx/my-path/user
// vite.config.ts  添加配置  base: my-path，路由这就会加上 my-path 前缀了

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    { path: '/login', meta: { title: '登录' }, component: () => import('@/views/Login/index.vue') },
    { path: '/user/patient', meta: { title: '家庭档案' }, component: () => import('@/views/User/PatientPage.vue') },
    {
      path: '/',
      redirect: '/home',
      component: () => import('@/views/Layout/index.vue'),
      children: [
        { path: '/home', meta: { title: '首页' }, component: () => import('@/views/Home/index.vue') },
        { path: '/article', meta: { title: '健康百科' }, component: () => import('@/views/Article/index.vue') },
        { path: '/notify', meta: { title: '消息通知' }, component: () => import('@/views/Notify/index.vue') },
        { path: '/user', meta: { title: '个人中心' }, component: () => import('@/views/User/index.vue') }
      ]

    }
  ]
})
// 访问权限控制
router.beforeEach((to) => {
  NProgress.start()
  // 用户仓库
  const store = useUserStore()
  // 不需要登录的页面，白名单
  const wihteList = ['/login']
  // 如果没有登录且不在白名单内，去登录
  if (!store.user?.token && !wihteList.includes(to.path)) return '/login'
  // 否则不做任何处理
})
// 全局的后置导航守卫
router.afterEach((to) => {
  document.title = `${to.meta.title || ''}-优医问诊`
  NProgress.done()
})
export default router
